﻿#version 330 core
precision mediump float;

in vec2 tex_coord;
out vec4 frag_color;

uniform sampler2D image1;
uniform sampler2D image2;
uniform vec3 tex_color;
uniform float progress; //一个取值在 0.0~1.0 的（uniform）渐变量

vec4 getFromColor(vec2 uv) {
  return texture(image1, uv);
}

vec4 getToColor(vec2 uv) {
  return texture(image2, uv);
}

// transition 是转场函数，功能类似于纹理采样函数，根据纹理坐标 uv 输出 rgba ，
// getFromColor(uv) 表示对源纹理进行采样，getToColor(uv) 表示对目标纹理进行采样，输出 rgba 。
vec4 transition(vec2 uv) {
  return mix(
    getFromColor(uv),
    getToColor(uv),
    progress
  );
}

void main(void) {
  frag_color = transition(tex_coord) * vec4(tex_color, 1.0f);
}